﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.IO;

namespace PotonViewer
{
    public partial class MainForm : Form
    {
        private int childFormNumber = 0;

        public MainForm()
        {
            InitializeComponent();
        }

        private void ShowNewForm(object sender, EventArgs e)
        {
            // 子フォームの新しいインスタンスを作成します。
            Form childForm = new ListViewForm();
            // 表示する前に、この MDI フォームの子に設定します。
            childForm.MdiParent = this;
            childForm.Text = "ウィンドウ " + childFormNumber++;
            childForm.Show();
        }

        private void OpenFile(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            openFileDialog.Filter = "テキスト ファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
            if (openFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = openFileDialog.FileName;
                // TODO: ファイルを開くコードをここに追加します。
            }
        }

        private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            saveFileDialog.Filter = "テキスト ファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
            if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = saveFileDialog.FileName;
                // TODO: 現在のフォームの内容をファイルに保存するためのコードをここに追加します
            }
        }

        private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void CutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: System.Windows.Forms.Clipboard 使用して、選択されたテキストまたはイメージをクリップボードに挿入します
        }

        private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: System.Windows.Forms.Clipboard 使用して、選択されたテキストまたはイメージをクリップボードに挿入します
        }

        private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: System.Windows.Forms.Clipboard.GetText() または System.Windows.Forms.GetData を使用して、情報をクリップボードから取得します。
        }

        private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStrip.Visible = toolBarToolStripMenuItem.Checked;
        }

        private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            statusStrip.Visible = statusBarToolStripMenuItem.Checked;
        }

        private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.Cascade);
        }

        private void TileVerticleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }

        private void TileHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.ArrangeIcons);
        }

        private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form childForm in MdiChildren)
            {
                childForm.Close();
            }
        }


        public void SetStatus(int nState, string str)
        {
            //statusStrip.Items[nState].Text = str;
        }
        
        private void MainForm_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.All;
            }
        }

        private void MainForm_DragDrop(object sender, DragEventArgs e)
        {
            string[] aPath = (string[])e.Data.GetData(DataFormats.FileDrop, false);

            Array.Sort(aPath);
            foreach (string path in aPath)
            {
                ListViewForm form = new ListViewForm();
                form.TargetFolder = path;
                form.MdiParent = this;
                if (ActiveMdiChild == null || ActiveMdiChild.WindowState == FormWindowState.Maximized)
                {
                    form.WindowState = FormWindowState.Maximized;
                }
                if (!form.LoadFolderList())
                {
                    return;
                }
                form.Show();
            }
            //try
            //{
            //    foreach (string sPath in aPath)
            //    {
            //        LoadFile(sPath);
            //    }
            //}
            //catch (UserException ue)
            //{
            //    Utility.ReportException(ue);
            //}
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            string[] aCommand = Environment.GetCommandLineArgs();
            for (int nLoop = 1; nLoop < aCommand.Length; nLoop++)
            {
                if (Directory.Exists(aCommand[nLoop]))
                {
                    ListViewForm form = new ListViewForm();
                    form.TargetFolder = aCommand[nLoop];
                    if (ActiveMdiChild == null || ActiveMdiChild.WindowState == FormWindowState.Maximized)
                    {
                        form.WindowState = FormWindowState.Maximized;
                    }
                    form.MdiParent = this;
                    form.Show();
                }
                else if (File.Exists(aCommand[nLoop]))
                {
                    ListViewForm form = new ListViewForm();
                    form.TargetFolder = Path.GetDirectoryName(aCommand[nLoop]);
                    if (ActiveMdiChild == null || ActiveMdiChild.WindowState == FormWindowState.Maximized)
                    {
                        form.WindowState = FormWindowState.Maximized;
                    }
                    form.MdiParent = this;
                    form.Show();
                }
            }
        }

        private void MainForm_Paint(object sender, PaintEventArgs e)
        {

        }

    }
}
